<!DOCTYPE html>
<html lang="zh-CN">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>真实设备连接文档</title>
    <link rel="stylesheet" href="lightbox.css">
    <style>
        body {
            font-family: Arial, sans-serif;
            line-height: 1.6;
            margin: 0;
            padding: 20px;
            color: #333;
            max-width: 1200px;
            margin: 0 auto;
        }
        h1, h2 {
            color: #0066cc;
        }
        h1 {
            border-bottom: 2px solid #0066cc;
            padding-bottom: 10px;
        }
        h2 {
            border-left: 4px solid #0066cc;
            padding-left: 10px;
            margin-top: 30px;
        }
        pre {
            background-color: #f5f5f5;
            padding: 15px;
            border-radius: 4px;
            overflow-x: auto;
        }
        code {
            font-family: Consolas, Monaco, 'Andale Mono', monospace;
            background-color: #f5f5f5;
            padding: 2px 5px;
            border-radius: 3px;
        }
        .steps {
            margin-left: 20px;
        }
        .step {
            margin-bottom: 20px;
        }
        .step-number {
            font-weight: bold;
            margin-right: 10px;
            color: #0066cc;
        }
        .image-container {
            text-align: center;
            margin: 20px 0;
        }
        .image-container img {
            max-width: 90%;
            border: 1px solid #ddd;
            border-radius: 4px;
            padding: 5px;
            box-shadow: 0 0 10px rgba(0,0,0,0.1);
            object-fit: contain;
            image-rendering: -webkit-optimize-contrast;
            image-rendering: crisp-edges;
            transform: translateZ(0);
            backface-visibility: hidden;
            cursor: pointer;
            transition: transform 0.3s ease;
        }
        
        .image-container img:hover {
            transform: scale(1.01);
        }
        /* 导航样式 */
        .nav-container {
            background-color: #f8f8f8;
            padding: 10px;
            margin-bottom: 20px;
            border-radius: 4px;
        }
        .nav-container a {
            display: inline-block;
            margin-right: 15px;
            text-decoration: none;
            color: #0066cc;
            padding: 5px 10px;
            border-radius: 4px;
        }
        .nav-container a:hover {
            background-color: #e0e0e0;
        }
        .nav-container a.active {
            background-color: #0066cc;
            color: white;
        }
        /* 页脚样式 */
        footer {
            margin-top: 30px;
            border-top: 1px solid #ddd;
            padding-top: 15px;
            text-align: center;
            font-size: 0.9em;
            color: #666;
        }
    </style>
</head>
<body>
    <!-- 导航栏 -->
    <div class="nav-container">
        <a href="../首页.html">首页</a>
        <a href="一、华为云设备接入服务IoTDA.html">1. 华为云设备接入服务IoTDA</a>
        <a href="二、真实设备连接.html" class="active">2. 真实设备连接</a>
        <a href="三、模拟设备连接.html">3. 模拟设备连接</a>
        <a href="四、模拟应用连接.html">4. 模拟应用连接</a>
        <a href="五、鸿蒙应用连接.html">5. 鸿蒙应用连接</a>
    </div>
    
    <h1>二、实际设备连接</h1>
    
    <p>在第一次实验时，需要属性设备连接方法与流程，如果只是为了测试mqtt服务，可以使用模拟接入</p>
    
    <div class="steps">
        <div class="step">
            <span class="step-number">步骤1:</span>
            将课程资源 led_control代码解压后，拷贝到/src/applications/sample/wifi-iot/app/目录下。
        </div>
        
        <div class="step">
            <span class="step-number">步骤2:</span>
            打开华为云IoTDA控制台进入所有设备页面，点击查看MQTT连接参数
            <div class="image-container">
                <img src="../图片/图片2/图片1.png" alt="华为云IoTDA控制台">
            </div>
        </div>
        
        <div class="step">
            <span class="step-number">步骤3:</span>
            iot_config.h中搜索 CONFIG_DEVICE_ID和 CONFIG_DEVICE_PWD,CONFIG_CLIENTID这三个字段。CONFIG_DEVICE_ID和 CONFIG_DEVICE_PWD,CONFIG_CLIENTID，三个字段配置参数在步骤2中获取。
            <pre><code>#define CONFIG_DEVICE_ID "XXXXXXXXXXXXXXXXXXXXXXXX" //生成Username
#define CONFIG_DEVICE_PWD "XXXXXX" //生成Password</code></pre>
        </div>
        
        <div class="step">
            <span class="step-number">步骤4:</span>
            修改iot_config.h中WiFi名称和WiFi密码，搜索字段CONFIG_AP_SSID:代表WiFi名称;CONFIG_AP_PWD:代表 WiFi密码。
            <pre><code>#define CONFIG_AP_SSID "xxxxxxxxx" // WIFI账号
#define CONFIG_AP_PWD "xxxxxxxxx" // WIFI密码</code></pre>
            这里的WIFI账号密码需要使用自己的手机热点(不要使用校园网)
        </div>
        
        <div class="step">
            <span class="step-number">步骤5:</span>
            led_control.c中下列字段参数与自定义创建模型属性及服务保持一致(用户自己定义)，使用参考案例不用修改。
            <pre><code>#define LED_CMD_CONTROL_MODE "ControlModule" //属性名称
#define LED_ON_PAYLOAD "LED_ON" //下发参数
#define LED_OFF_PAYLOAD "LED_OFF" //下发参数</code></pre>
        </div>
        
        <div class="step">
            <span class="step-number">步骤6:</span>
            在华为云如下界面点击总览，可以看到平台接入地址，点击进去之后可以看到设备接入 MQTT字样如下图所示，复制"80e4fed6da.st1.iotda-device.cn-north-4.myhuaweicloud.com"字段，将该字段写到 iot_main.c中 CN_IOT_SERVER字段中。
            <div class="image-container">
                <img src="../图片/图片2/图片2.png" alt="华为云总览界面">
            </div>
            具体修改如下图所示。
            <div class="image-container">
                <img src="../图片/图片2/图片3.png" alt="iot_main.c修改">
            </div>
        </div>
        
        <div class="step">
            <span class="step-number">步骤7:</span>
            修改源码/applications/sample/wifi-iot/app下的 BUILD.gn文件，在features字段中增加索引，使目标模块参与编译。 features字段指定业务模块的路径和目标, features字段配置如下:
            <pre><code>import("//build/lite/config/component/lite_component.gni")
lite_component("app") {
    features = [
        "led_control-I0T:led_control",
    ]
}</code></pre>
        </div>
        
        <div class="step">
            <span class="step-number">步骤8:</span>
            修改device/hisilicon/hispark_pegasus/sdk_liteos/build/config/usr_config.mk文件。在这个配置文件中打开I2C,PWM驱动宏。搜索字段CONFIG_I2C_SUPPORT，并打开I2C。配置如下:
            <pre><code># CONFIG_I2C_SUPPORT is not set
CONFIG_I2C_SUPPORT=y</code></pre>
        </div>
        
        <div class="step">
            <span class="step-number">步骤9:</span>
            (此不不需要修改) MQTT云端互联使用的 paho.mqtt，目前已提供适配鸿蒙系统的paho.mqtt，在/device/hisilicon/hispark_pegasus/sdk_liteos/third_party/paho.mqtt.c/include/mqtt"目录下。
        </div>
        
        <div class="step">
            <span class="step-number">步骤10:</span>
            编译工程代码
        </div>
        
        <div class="step">
            <span class="step-number">步骤11:</span>
            烧录程序到开发板。烧录成功后，关闭烧录终端。
            <div class="image-container">
                <img src="../图片/图片2/图片4.jpg" alt="烧录程序">
            </div>
        </div>
        
        <div class="step">
            <span class="step-number">步骤12:</span>
            点击主板上左侧按键，通过按键控制LED灯亮灭，可以看到最新数据上报情况。
            <pre><code>netifapi_netif_common: 0
=====================================================================================================
IOTSERVER:80e4fed6da.st1.iotda-device.cn-north-4.myhuaweicloud.com 660入按键:0
进入按键:0 Connect IoT server failed,please check the network and parameters:-1
The connection lost and we will try another connect led control module
SNDMSG:QOS:0 TOPIC:$oc/devices/6470090ea1e0862b43d1ce8a_1ed001/sys/properties/report
PAYLOAD:{"services":[{"service_id":"smartlight","properties":{"ControlModule":"LED_OF"}}]}
进入按键:0进度键关灯:  $ led control module
SNDMSG:QOS:0 TOPIC:$oc/devices/6470090ea1e0862b43d1ce8a_led001/sys/properties/report
PAYLOAD:{"services":[{"service_id":"smartlight","properties":{"ControlModule":"LED_OF"}}]}
进入按键:0进续键关灯:0 led control module
SNDMSG:QOS:0 TOPIC:$oc/devices/6470090ea1e0862b43d1ce8a_led001/sys/properties/report
PAYLOAD:{"services":[{"service_id":"smartlight","properties":{"ControlModule":"LED_OFF"}}]}</code></pre>
            <div class="image-container">
                <img src="../图片/图片2/图片5.jpg" alt="数据上报情况">
            </div>
        </div>
        
        <div class="step">
            <span class="step-number">步骤13:</span>
            通过华为 IOTDA下发控制指令。在设备列表中点击设备，打开设备详情页面。
            <div class="image-container">
                <img src="../图片/图片2/图片6.jpg" alt="设备详情页面">
            </div>
            然后根据开发板代码设置的下发参数(LED_ON或者LED_OFF)发送对应指令,可以看到LED亮灭。
            <div class="image-container">
                <img src="../图片/图片2/图片7.png" alt="发送指令">
            </div>
            <div class="image-container">
                <img src="../图片/图片2/图片8.png" alt="LED亮灭">
            </div>
        </div>
    </div>
    
    <!-- 页脚导航 -->
    <footer>
        <p>
            <a href="一、华为云设备接入服务IoTDA.html">上一篇: 华为云设备接入服务IoTDA</a> | 
            <a href="三、模拟设备连接.html">下一篇: 模拟设备连接</a>
        </p>
    </footer>
    
    <!-- 引入灯箱脚本 -->
    <script src="lightbox.js"></script>
</body>
</html>